/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Controladores;

import javax.swing.*;
import java.util.*;
import Beans.Proveedor;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/**
 *Esta clase sirve como controlador de la clase Proveedor y aqui
 * se registra, modifica, consulta y elimina
 * @author Leyner Cordoba Mosquera
 */
public class Mproveedor {


    
    File archivo=new File("D:\\persistencia\\Proveedores.dat");
    
    public void grabar() throws IOException {

      FileOutputStream   flujoSalida  = new FileOutputStream(archivo);
      ObjectOutputStream objetoSalida = new ObjectOutputStream(flujoSalida);
      objetoSalida.writeObject(this.getProveedores());
      objetoSalida.close();
     }


    public void restaurar() throws IOException,ClassNotFoundException {

 	FileInputStream flujoEntrada    = new FileInputStream(archivo);
  	ObjectInputStream objetoEntrada = new ObjectInputStream(flujoEntrada);
  	List<Proveedor> pro = (List) objetoEntrada.readObject();
  	this.setProveedores(pro);
        objetoEntrada.close();
    }

    private  List <Proveedor> proveedores = new LinkedList<Proveedor>();//lista
    Proveedor pr= new Proveedor();

    public Boolean Existe(int nit){
        boolean sw=false;
        Iterator it = getProveedores().iterator();
        while(it.hasNext()){
            pr = (Proveedor)it.next();
            if(pr.getNit()==nit){
                sw=true;
            }
        }
        return sw;
    }


      public void Modificar(int pos,int nit,Proveedor prove){
       Iterator itc=getProveedores().iterator();
         while(itc.hasNext()){
             pr = (Proveedor)itc.next();
            if(pr.getNit() == nit){
                getProveedores().set(pos, prove);
                JOptionPane.showMessageDialog(null,"Los datos se guardaron "
                                                 + "Satisfactoriamente");
            }
        }
       }
     public void Registrar(Proveedor pr){
         if(!Existe(pr.getNit())){
             getProveedores().add(pr);
             JOptionPane.showMessageDialog(null,"El proveedor se registro "
                                              + "correctamente");
         }else{
             JOptionPane.showMessageDialog(null,"El proveedor"
                                              + " ya se encuentra registrado",
                                              "Informacion"
                                              ,JOptionPane.ERROR_MESSAGE);
         }
      }

    public Proveedor Consultar(int nit){
        Iterator it = getProveedores().iterator();
        while(it.hasNext()){
            Proveedor pro = (Proveedor)it.next();
              if(pro.getNit() == nit){
                 return pro;
              }else{
                 JOptionPane.showMessageDialog(null,"Proveedor no encontrado");
              }
         }
        return new Proveedor();
     }


     public Proveedor Recorrer(){
         Iterator it = getProveedores().iterator();
         while(it.hasNext()){
             Proveedor pro = (Proveedor)it.next();
             return pro;
         }
         return new Proveedor();
     }

     public void Eliminar(int nit){
        Iterator it = getProveedores().iterator();
         while(it.hasNext()){
            pr =(Proveedor)it.next();
            if(pr.getNit()== nit){
                 getProveedores().remove(pr);
                  JOptionPane.showMessageDialog(null,"Eliminado");
             }
         }
     }

    /**
     * @return the proveedores
     */
    public List<Proveedor> getProveedores() {
        return proveedores;
    }

    /**
     * @param proveedores the proveedores to set
     */
    public void setProveedores(List<Proveedor> proveedores) {
        this.proveedores = proveedores;
    }
    
 }
